<?php

namespace Pinenut\Files\Adapter;

use Pinenut\Files\Adapter;

class MongoGridFS extends Adapter {
	static $config = '\MongoAdapterConfig';
	
	/**
	 * Соединения с разными коллекциями
	 *
	 * @var \MongoGridFS
	 */
	protected $connect = null;
	
	/**
	 * Коннект к коллекции базы
	 *
	 * @return \MongoGridFS
	 */
	function connect() {
		if (null === $this->connect) {
			$configClassName = static::$config;
			$config = $configClassName::get ();
			$client = new \MongoClient ( @$config ['server'], @$config ['options'] );
			$db = $client->selectDB ( @$config ['db'] );
			$this->connect = $db->getGridFS ();
		}
		return $this->connect;
	}
	function get($id) {
		$file = $this->connect ()->get ( new \MongoId ( $id ) );
		// посылаем пользователю бинарное представление файла
		if ($file) {
			return $file->getBytes ();
		}
	}
	/**
	 *
	 * @param string $bin        	
	 * @return string id
	 */
	function put($bin) {
		return $this->connect ()->storeBytes ( $bin );
	}
	
	/**
	 *
	 * @param string $filename        	
	 * @return string id
	 */
	function putFile($filename) {
		return $this->connect ()->storeFile ( $filename );
	}
	function delete($id) {
		$this->connect ()->delete ( new \MongoId ( $id ) );
	}
}